package com.hzncc.flowable_diboot.vo.bpm;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Description :
 * @Date : 2024/6/25
 * @Author : ChenJin
 * @Version : v1.0.0
 **/
@Data
public class BpmTaskRespVO {

    private String modelKey;

    private String businessKey;

    private String id;

    private String name;

    private Date createTime;

    private Date endTime;

    /**
     * 持续时间
     */
    private Long durationInMillis;

    /**
     * 任务状态
     */
    private Integer status; // 参见 BpmTaskStatusEnum 枚举

    /**
     * 流程状态
     */
    private Integer processInstanceStatus; // 参见 BpmInstanceStatusEnum 枚举

    private String processInstanceStatusLabel; // 参见 BpmInstanceStatusEnum 枚举

    /**
     * 审批理由
     */
    private String reason;

    /**
     * 负责人的用户信息
     */
    private BpmProcessInstanceRespVO.User ownerUser;
    /**
     * 审核的用户信息
     */
    private BpmProcessInstanceRespVO.User assigneeUser;

    /**
     * 任务定义的标识
     */
    private String taskDefinitionKey;

    /**
     * 所属流程实例ID
     */
    private String processInstanceId;
    
    /**
     * 所属流程实例
     */
    private ProcessInstance processInstance;

    /**
     * 父任务编号
     */
    private String parentTaskId;

    /**
     * 子任务列表，由加签产生
     */
    private List<BpmTaskRespVO> children;

    /**
     * 表单ID
     */
    private String formId;

    /**
     * 表单名称
     */
    private String formName;

    /**
     * 表达配置
     */
    private String formConf;

    /**
     * 表单项
     */
    private String formFields;

    /**
     * 表单值
     */
    private Map<String, Object> formVariables;

    @Data
    public static class ProcessInstance {

        private String id;

        private String name;

        private Date startTime;

        private String processDefinitionId;

        /**
         * 发起人的用户信息
         */
        private BpmProcessInstanceRespVO.User startUser;

    }

}
